"""
ExtractCheckpoints节点的工具函数
"""

def create_extraction_prompt(chunk_id: int, chunk_text: str) -> str:
    """
    创建提取评估项的提示词
    
    Args:
        chunk_id: 文本块ID
        chunk_text: 文本块内容
        
    Returns:
        str: 格式化的提示词
    """
    return f"""
请仔细分析以下安全评估指南文本片段，提取其中的评估项与细项。

需要符合以下格式的JSON数组：
```json
[
  {{
    "module": "模块名称",
    "category": "分类名称", 
    "checkpoint": "评估细项描述"
  }}
]
```

module属性分类指南：
- 基础设施安全：包括容器安全、镜像管理、网络配置、系统变更管理等
- 平台安全：包括平台配置、访问控制、服务安全等
- 应用安全：包括应用代码、业务逻辑、接口安全等
- 数据安全：包括数据存储、传输、备份、加密等
- 合作安全：包括第三方合作、供应链安全等

category属性分类指南：
- 含义：对module的细化分类，需根据文本内容提取或总结该评估点所属的具体领域
- 表达：应直接反映原文中的关键词或核心概念，尽量使用原词或行业通用名词
- 示例：
  - 当module为“基础设施安全”时，category可为“容器安全”“镜像管理”“网络配置”等
  - 当module为“数据安全”时，category可为“数据存储”“数据传输”“数据加密”等

提取规则：
1. 每个"查验"、"检查"、"验证"等动作都可能是一个评估项
2. 技术要求、安全措施、操作规范都应该被提取
3. checkpoint描述必须包含两个关键要素：
   - **触发条件**：在什么情况下需要进行这项检查
   - **查验要求**：具体需要查验或确认什么内容
4. 描述格式建议：当[触发条件]时，查验[具体要求]
5. 即使原文描述较短，也要尝试补充完整的业务场景
6. 如果确实没有任何可提取的评估内容，才返回空数组[]

示例格式：
- 好的描述："当企业与第三方供应商建立合作关系时，查验供应商是否具备不低于本企业的安全防护能力"
- 好的描述："当系统进行重要配置变更时，查验变更是否经过安全审批流程"
- 不好的描述："查验第三方安全能力"（缺少触发条件）
- 不好的描述："建立合作关系"（缺少查验要求）

文本片段（块{chunk_id}）：
{chunk_text}

请仔细分析并提取所有可能的评估项：
"""